#ifndef MODEL_H
#define MODEL_H
#include <SDL.h>
#include <iostream>
#include <vector>
#include <string>
using std::string;

#include "clock.h"
#include "sprite.h"
#include "viewport.h"
#include "world.h"
#include "lsystem.h"
#include "gamedata.h"
#include "frameFactory.h"
#include "spriteFactory.h"

class Model {
public:
  Model ();
  ~Model ();
  void draw() const;
  void update();
  void makeSprites();
  void changeTracker();
  void giveHelp();
  void pause();
  bool isPaused() const; 
  void drawHelp() const;
  void drawFps() const;
  void drawFocus() const;
  void toggleHelp(){showHelp = !showHelp;}

private:
  const Gamedata* gameData;
  IOManager *io;
  Clock clock;
  unsigned int trackingNumber;
  SDL_Surface *screen;
  
  
  FrameFactory factory;
  SpriteFactory sfactory;
  World world;
  
  Viewport *view;
  std::vector<Sprite*> sprites;
  bool showHelp;
  Model(const Model&);
  Model& operator=(const Model&);
};
#endif
